package br.com.adimoveis.ui.cliente;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import br.com.adimoveis.dao.ProcuraDao;
import br.com.adimoveis.model.Cliente;

public class ClienteModel implements IClienteModel{

	private List<Cliente> clientes;

	private Cliente selectedCliente;
	
	private ProcuraDao procuraDao;

	@SuppressWarnings("unchecked")
	public ClienteModel() throws FileNotFoundException{
//		XStream xstream = new XStream(new DomDriver(encoding));
//		clientes = (List<Cliente>) xstream.fromXML(new FileInputStream(PATH));
	}
	public Cliente[] getImovels() {
		return clientes.toArray(new Cliente[clientes.size()]);
	}
	
	public Cliente getSelectedItem() {
		return selectedCliente;
	}
	
	public void setSelectedItem(Cliente object) {
		this.selectedCliente = object;
	}

	public void saveAll() {
		if(selectedCliente != null && !clientes.contains(selectedCliente)){
			clientes.add(selectedCliente);
		}

//		XStream xstream = new XStream(new DomDriver(encoding));
//		String xml = xstream.toXML(clientes);
//
//		BufferedWriter out = new BufferedWriter(new FileWriter(PATH));
//		out.write(xml);
//		out.close();

	}


	public boolean contains(Cliente selectedImovel) {
		for(Cliente imovel : clientes){

			if(imovel == selectedImovel){
				return true;
			}
		}
		return false;
	}
	
	public void excluirItem(Object obj) {
		clientes.remove(obj);
	}
	public Cliente[] getItems() {
		return clientes.toArray(new Cliente[clientes.size()]);
	}
	public void addElement(Cliente e) {
		clientes.add(e);
	}
	public Cliente[] getItemsByText(String texto) {
		List<Cliente> retorno = new ArrayList<Cliente>();
		for(Cliente cliente : clientes){
			if(cliente.getNome().toUpperCase().contains(texto.toUpperCase())){
				retorno.add(cliente);
			}else if(cliente.getEmail().toUpperCase().contains(texto.toUpperCase())){
				retorno.add(cliente);
			}
		}
		return retorno.toArray(new Cliente[retorno.size()]);
	}
	public Object[] getAparenciaImovel() {
		return procuraDao.getAparencias().toArray();
	}
	public Object[] getBairros() {
		return procuraDao.getBairros().toArray();
	}
	public Object[] getTipoImoveis() {
		return procuraDao.getTipos().toArray();
	}
	public ProcuraDao getProcuraDao() {
		return procuraDao;
	}
	public void setProcuraDao(ProcuraDao procuraDao) {
		this.procuraDao = procuraDao;
	}
	
	
}
